
<!doctype html>
<html lang="zh" class="no-js">
  <head>
    
      <meta charset="utf-8">
      <meta name="viewport" content="width=device-width,initial-scale=1">
      
      
      
      
        <link rel="prev" href="../Network25-30/">
      
      
        <link rel="next" href="../Network37-42/">
      
      <link rel="icon" href="../../assets/favicon.png">
      <meta name="generator" content="mkdocs-1.4.2, mkdocs-material-9.1.6">
    
    
      
        <title>31-36章 - OpenCloudOS Documentation</title>
      
    
    
      <link rel="stylesheet" href="../../assets/stylesheets/main.ded33207.min.css">
      
        
        <link rel="stylesheet" href="../../assets/stylesheets/palette.a0c5b2b5.min.css">
      
      

    
    
    
      
        
        
        <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
        <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
        <style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
      
    
    
    <script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
    
      

    
    
    
  </head>
  
  
    
    
      
    
    
    
    
    <body dir="ltr" data-md-color-scheme="default" data-md-color-primary="indigo" data-md-color-accent="indigo">
  
    
    
      <script>var palette=__md_get("__palette");if(palette&&"object"==typeof palette.color)for(var key of Object.keys(palette.color))document.body.setAttribute("data-md-color-"+key,palette.color[key])</script>
    
    <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
    <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
    <label class="md-overlay" for="__drawer"></label>
    <div data-md-component="skip">
      
        
        <a href="#31-linux" class="md-skip">
          跳转至
        </a>
      
    </div>
    <div data-md-component="announce">
      
    </div>
    
    
      

<header class="md-header" data-md-component="header">
  <nav class="md-header__inner md-grid" aria-label="页眉">
    <a href="../.." title="OpenCloudOS Documentation" class="md-header__button md-logo" aria-label="OpenCloudOS Documentation" data-md-component="logo">
      
  <img src="../../assets/logo.svg" alt="logo">

    </a>
    <label class="md-header__button md-icon" for="__drawer">
      <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg>
    </label>
    <div class="md-header__title" data-md-component="header-title">
      <div class="md-header__ellipsis">
        <div class="md-header__topic">
          <span class="md-ellipsis">
            OpenCloudOS Documentation
          </span>
        </div>
        <div class="md-header__topic" data-md-component="header-topic">
          <span class="md-ellipsis">
            
              31-36章
            
          </span>
        </div>
      </div>
    </div>
    
      <form class="md-header__option" data-md-component="palette">
        
          
          <input class="md-option" data-md-color-media="" data-md-color-scheme="default" data-md-color-primary="indigo" data-md-color-accent="indigo"  aria-label="Switch to dark mode"  type="radio" name="__palette" id="__palette_1">
          
            <label class="md-header__button md-icon" title="Switch to dark mode" for="__palette_2" hidden>
              <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12 20 8.69Z"/></svg>
            </label>
          
        
          
          <input class="md-option" data-md-color-media="" data-md-color-scheme="slate" data-md-color-primary="indigo" data-md-color-accent="indigo"  aria-label="Switch to light mode"  type="radio" name="__palette" id="__palette_2">
          
            <label class="md-header__button md-icon" title="Switch to light mode" for="__palette_1" hidden>
              <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12c0-2.42-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12 20 8.69Z"/></svg>
            </label>
          
        
      </form>
    
    
      <div class="md-header__option">
        <div class="md-select">
          
          <button class="md-header__button md-icon" aria-label="选择当前语言">
            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="m12.87 15.07-2.54-2.51.03-.03A17.52 17.52 0 0 0 14.07 6H17V4h-7V2H8v2H1v2h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04M18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12m-2.62 7 1.62-4.33L19.12 17h-3.24Z"/></svg>
          </button>
          <div class="md-select__inner">
            <ul class="md-select__list">
              
                <li class="md-select__item">
                  <a href="./" hreflang="zh" class="md-select__link">
                    中文
                  </a>
                </li>
              
                <li class="md-select__item">
                  <a href="../../en/network/Network31-36/" hreflang="en" class="md-select__link">
                    English
                  </a>
                </li>
              
            </ul>
          </div>
        </div>
      </div>
    
    
      <label class="md-header__button md-icon" for="__search">
        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
      </label>
      <div class="md-search" data-md-component="search" role="dialog">
  <label class="md-search__overlay" for="__search"></label>
  <div class="md-search__inner" role="search">
    <form class="md-search__form" name="search">
      <input type="text" class="md-search__input" name="query" aria-label="搜索" placeholder="搜索" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
      <label class="md-search__icon md-icon" for="__search">
        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg>
      </label>
      <nav class="md-search__options" aria-label="查找">
        
          <a href="javascript:void(0)" class="md-search__icon md-icon" title="分享" aria-label="分享" data-clipboard data-clipboard-text="" data-md-component="search-share" tabindex="-1">
            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M18 16.08c-.76 0-1.44.3-1.96.77L8.91 12.7c.05-.23.09-.46.09-.7 0-.24-.04-.47-.09-.7l7.05-4.11c.54.5 1.25.81 2.04.81a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3c0 .24.04.47.09.7L8.04 9.81C7.5 9.31 6.79 9 6 9a3 3 0 0 0-3 3 3 3 0 0 0 3 3c.79 0 1.5-.31 2.04-.81l7.12 4.15c-.05.21-.08.43-.08.66 0 1.61 1.31 2.91 2.92 2.91 1.61 0 2.92-1.3 2.92-2.91A2.92 2.92 0 0 0 18 16.08Z"/></svg>
          </a>
        
        <button type="reset" class="md-search__icon md-icon" title="清空当前内容" aria-label="清空当前内容" tabindex="-1">
          <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg>
        </button>
      </nav>
      
        <div class="md-search__suggest" data-md-component="search-suggest"></div>
      
    </form>
    <div class="md-search__output">
      <div class="md-search__scrollwrap" data-md-scrollfix>
        <div class="md-search-result" data-md-component="search-result">
          <div class="md-search-result__meta">
            正在初始化搜索引擎
          </div>
          <ol class="md-search-result__list" role="presentation"></ol>
        </div>
      </div>
    </div>
  </div>
</div>
    
    
      <div class="md-header__source">
        <a href="https://github.com/OpenCloudOS/opencloudos.github.io" title="前往仓库" class="md-source" data-md-component="source">
  <div class="md-source__icon md-icon">
    
    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.4.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc.--><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"/></svg>
  </div>
  <div class="md-source__repository">
    OpenCloudOS/opencloudos.github.io
  </div>
</a>
      </div>
    
  </nav>
  
</header>
    
    <div class="md-container" data-md-component="container">
      
      
        
          
            
<nav class="md-tabs" aria-label="标签" data-md-component="tabs">
  <div class="md-grid">
    <ul class="md-tabs__list">
      
        
  
  


  <li class="md-tabs__item">
    <a href="../.." class="md-tabs__link">
      首页
    </a>
  </li>

      
        
  
  


  
  
  
    <li class="md-tabs__item">
      <a href="../../quickstart/V9_install/" class="md-tabs__link">
        快速入门
      </a>
    </li>
  

      
        
  
  
    
  


  
  
  
    <li class="md-tabs__item">
      <a href="../../guide/config/" class="md-tabs__link md-tabs__link--active">
        用户指南
      </a>
    </li>
  

      
        
  
  


  
  
  
    <li class="md-tabs__item">
      <a href="../../release/v8.5/" class="md-tabs__link">
        版本说明
      </a>
    </li>
  

      
        
  
  


  <li class="md-tabs__item">
    <a href="../../faq/" class="md-tabs__link">
      常见问题
    </a>
  </li>

      
        
  
  


  
  
  
    <li class="md-tabs__item">
      <a href="../../contribution/how-to/" class="md-tabs__link">
        参与贡献
      </a>
    </li>
  

      
        
  
  


  
  
  
    <li class="md-tabs__item">
      <a href="../../adaptation/adaptation_process/" class="md-tabs__link">
        生态认证
      </a>
    </li>
  

      
        
  
  


  
  
  
    <li class="md-tabs__item">
      <a href="../../guide/migrate_relative/" class="md-tabs__link">
        CentOS停服专区
      </a>
    </li>
  

      
    </ul>
  </div>
</nav>
          
        
      
      <main class="md-main" data-md-component="main">
        <div class="md-main__inner md-grid">
          
            
              
              <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
                <div class="md-sidebar__scrollwrap">
                  <div class="md-sidebar__inner">
                    

  


<nav class="md-nav md-nav--primary md-nav--lifted" aria-label="导航栏" data-md-level="0">
  <label class="md-nav__title" for="__drawer">
    <a href="../.." title="OpenCloudOS Documentation" class="md-nav__button md-logo" aria-label="OpenCloudOS Documentation" data-md-component="logo">
      
  <img src="../../assets/logo.svg" alt="logo">

    </a>
    OpenCloudOS Documentation
  </label>
  
    <div class="md-nav__source">
      <a href="https://github.com/OpenCloudOS/opencloudos.github.io" title="前往仓库" class="md-source" data-md-component="source">
  <div class="md-source__icon md-icon">
    
    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.4.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc.--><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"/></svg>
  </div>
  <div class="md-source__repository">
    OpenCloudOS/opencloudos.github.io
  </div>
</a>
    </div>
  
  <ul class="md-nav__list" data-md-scrollfix>
    
      
      
      

  
  
  
    <li class="md-nav__item">
      <a href="../.." class="md-nav__link">
        首页
      </a>
    </li>
  

    
      
      
      

  
  
  
    
    <li class="md-nav__item md-nav__item--nested">
      
      
      
      
      <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2" >
      
      
        
          
        
          
        
          
        
      
      
        <label class="md-nav__link" for="__nav_2" id="__nav_2_label" tabindex="0">
          快速入门
          <span class="md-nav__icon md-icon"></span>
        </label>
      
      <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_2_label" aria-expanded="false">
        <label class="md-nav__title" for="__nav_2">
          <span class="md-nav__icon md-icon"></span>
          快速入门
        </label>
        <ul class="md-nav__list" data-md-scrollfix>
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="../../quickstart/V9_install/" class="md-nav__link">
        OC V9 下载及安装
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="../../quickstart/V8_install/" class="md-nav__link">
        OC V8 下载及安装
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="../../quickstart/use/" class="md-nav__link">
        使用说明
      </a>
    </li>
  

            
          
        </ul>
      </nav>
    </li>
  

    
      
      
      

  
  
    
  
  
    
    <li class="md-nav__item md-nav__item--active md-nav__item--nested">
      
      
      
      
      <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3" checked>
      
      
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
      
      
        <label class="md-nav__link" for="__nav_3" id="__nav_3_label" tabindex="0">
          用户指南
          <span class="md-nav__icon md-icon"></span>
        </label>
      
      <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_3_label" aria-expanded="true">
        <label class="md-nav__title" for="__nav_3">
          <span class="md-nav__icon md-icon"></span>
          用户指南
        </label>
        <ul class="md-nav__list" data-md-scrollfix>
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="../../guide/config/" class="md-nav__link">
        基础配置
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="../../guide/sysadmin/" class="md-nav__link">
        系统管理
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="../../guide/update/" class="md-nav__link">
        内核更新
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="../../guide/monitor/" class="md-nav__link">
        系统状态监控
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="../../guide/security/" class="md-nav__link">
        安全加固
      </a>
    </li>
  

            
          
            
              
  
  
  
    
      
    
    <li class="md-nav__item md-nav__item--section md-nav__item--nested">
      
      
      
      
      <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_6" >
      
      
        
          
        
          
        
          
        
      
      
        <label class="md-nav__link" for="__nav_3_6" id="__nav_3_6_label" tabindex="0">
          存储管理
          <span class="md-nav__icon md-icon"></span>
        </label>
      
      <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_3_6_label" aria-expanded="false">
        <label class="md-nav__title" for="__nav_3_6">
          <span class="md-nav__icon md-icon"></span>
          存储管理
        </label>
        <ul class="md-nav__list" data-md-scrollfix>
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="../../storage/file_system/" class="md-nav__link">
        文件系统
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="../../storage/configuring_and_managing_logical_volumes/" class="md-nav__link">
        逻辑卷管理
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="../../storage/managing_storage_devices/" class="md-nav__link">
        可用的存储选项
      </a>
    </li>
  

            
          
        </ul>
      </nav>
    </li>
  

            
          
            
              
  
  
    
  
  
    
      
    
    <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested">
      
      
      
      
      <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_7" checked>
      
      
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
      
      
        <label class="md-nav__link" for="__nav_3_7" id="__nav_3_7_label" tabindex="0">
          网络管理
          <span class="md-nav__icon md-icon"></span>
        </label>
      
      <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_3_7_label" aria-expanded="true">
        <label class="md-nav__title" for="__nav_3_7">
          <span class="md-nav__icon md-icon"></span>
          网络管理
        </label>
        <ul class="md-nav__list" data-md-scrollfix>
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="../Network1-6/" class="md-nav__link">
        1-6章
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="../Network7-12/" class="md-nav__link">
        7-12章
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="../Network13-18/" class="md-nav__link">
        13-18章
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="../Network19-24/" class="md-nav__link">
        19-24章
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="../Network25-30/" class="md-nav__link">
        25-30章
      </a>
    </li>
  

            
          
            
              
  
  
    
  
  
    <li class="md-nav__item md-nav__item--active">
      
      <input class="md-nav__toggle md-toggle" type="checkbox" id="__toc">
      
      
        
      
      
        <label class="md-nav__link md-nav__link--active" for="__toc">
          31-36章
          <span class="md-nav__icon md-icon"></span>
        </label>
      
      <a href="./" class="md-nav__link md-nav__link--active">
        31-36章
      </a>
      
        

<nav class="md-nav md-nav--secondary" aria-label="目录">
  
  
  
    
  
  
    <label class="md-nav__title" for="__toc">
      <span class="md-nav__icon md-icon"></span>
      目录
    </label>
    <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
      
        <li class="md-nav__item">
  <a href="#311" class="md-nav__link">
    31.1.排队规则概述
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#312-opencloudos-qdiscs" class="md-nav__link">
    31.2. OpenCloudOS 中可用的 qdiscs
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#313-tc-qdiscs" class="md-nav__link">
    31.3.使用 tc 工具检查网络接口的 qdiscs
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#314-qdisc" class="md-nav__link">
    31.4.更新默认的 qdisc
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#tc-qdisk" class="md-nav__link">
    使用 tc 工具临时设置网络接口的 qdisk
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#316-networkmanager-qdisk" class="md-nav__link">
    31.6.使用 NetworkManager 永久设置网络接口的当前 qdisk
  </a>
  
</li>
      
    </ul>
  
</nav>
      
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="../Network37-42/" class="md-nav__link">
        37-42章
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="../Network43-48/" class="md-nav__link">
        43-48章
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="../Network49-54/" class="md-nav__link">
        49-54章
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="../Network55-57/" class="md-nav__link">
        55-57章
      </a>
    </li>
  

            
          
        </ul>
      </nav>
    </li>
  

            
          
        </ul>
      </nav>
    </li>
  

    
      
      
      

  
  
  
    
    <li class="md-nav__item md-nav__item--nested">
      
      
      
      
      <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4" >
      
      
        
          
        
          
        
          
        
          
        
          
        
      
      
        <label class="md-nav__link" for="__nav_4" id="__nav_4_label" tabindex="0">
          版本说明
          <span class="md-nav__icon md-icon"></span>
        </label>
      
      <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_4_label" aria-expanded="false">
        <label class="md-nav__title" for="__nav_4">
          <span class="md-nav__icon md-icon"></span>
          版本说明
        </label>
        <ul class="md-nav__list" data-md-scrollfix>
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="../../release/v8.5/" class="md-nav__link">
        v8.5
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="../../release/v8.6/" class="md-nav__link">
        v8.6
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="../../release/v9.0/" class="md-nav__link">
        v9.0
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="../../release/ocs/" class="md-nav__link">
        OpenCloudOS Stream
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="../../release/ocsk/" class="md-nav__link">
        OpenCloudOS Stream Kernel
      </a>
    </li>
  

            
          
        </ul>
      </nav>
    </li>
  

    
      
      
      

  
  
  
    <li class="md-nav__item">
      <a href="../../faq/" class="md-nav__link">
        常见问题
      </a>
    </li>
  

    
      
      
      

  
  
  
    
    <li class="md-nav__item md-nav__item--nested">
      
      
      
      
      <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_6" >
      
      
        
          
        
          
        
          
        
      
      
        <label class="md-nav__link" for="__nav_6" id="__nav_6_label" tabindex="0">
          参与贡献
          <span class="md-nav__icon md-icon"></span>
        </label>
      
      <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_6_label" aria-expanded="false">
        <label class="md-nav__title" for="__nav_6">
          <span class="md-nav__icon md-icon"></span>
          参与贡献
        </label>
        <ul class="md-nav__list" data-md-scrollfix>
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="../../contribution/how-to/" class="md-nav__link">
        如何贡献
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="../../contribution/docs-format-guide/" class="md-nav__link">
        文档库格式手册
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="../../contribution/kernel-develop-guide/" class="md-nav__link">
        内核开发指南
      </a>
    </li>
  

            
          
        </ul>
      </nav>
    </li>
  

    
      
      
      

  
  
  
    
    <li class="md-nav__item md-nav__item--nested">
      
      
      
      
      <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_7" >
      
      
        
          
        
          
        
          
        
          
        
      
      
        <label class="md-nav__link" for="__nav_7" id="__nav_7_label" tabindex="0">
          生态认证
          <span class="md-nav__icon md-icon"></span>
        </label>
      
      <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_7_label" aria-expanded="false">
        <label class="md-nav__title" for="__nav_7">
          <span class="md-nav__icon md-icon"></span>
          生态认证
        </label>
        <ul class="md-nav__list" data-md-scrollfix>
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="../../adaptation/adaptation_process/" class="md-nav__link">
        生态认证流程
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="../../adaptation/testcase/" class="md-nav__link">
        硬件测试用例
      </a>
    </li>
  

            
          
            
              
  
  
  
    
      
    
    <li class="md-nav__item md-nav__item--section md-nav__item--nested">
      
      
      
      
      <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_7_3" >
      
      
        
          
        
          
        
          
        
      
      
        <label class="md-nav__link" for="__nav_7_3" id="__nav_7_3_label" tabindex="0">
          认证兼容列表
          <span class="md-nav__icon md-icon"></span>
        </label>
      
      <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_7_3_label" aria-expanded="false">
        <label class="md-nav__title" for="__nav_7_3">
          <span class="md-nav__icon md-icon"></span>
          认证兼容列表
        </label>
        <ul class="md-nav__list" data-md-scrollfix>
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="../../adaptation/adaptation_hw/" class="md-nav__link">
        硬件兼容列表
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="../../adaptation/adaptation_sw/" class="md-nav__link">
        商业软件兼容列表
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="../../adaptation/adaptation_oss/" class="md-nav__link">
        开源软件兼容列表
      </a>
    </li>
  

            
          
        </ul>
      </nav>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="../../adaptation/adaptation_FAQ/" class="md-nav__link">
        适配FAQ
      </a>
    </li>
  

            
          
        </ul>
      </nav>
    </li>
  

    
      
      
      

  
  
  
    
    <li class="md-nav__item md-nav__item--nested">
      
      
      
      
      <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_8" >
      
      
        
          
        
          
        
      
      
        <label class="md-nav__link" for="__nav_8" id="__nav_8_label" tabindex="0">
          CentOS停服专区
          <span class="md-nav__icon md-icon"></span>
        </label>
      
      <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_8_label" aria-expanded="false">
        <label class="md-nav__title" for="__nav_8">
          <span class="md-nav__icon md-icon"></span>
          CentOS停服专区
        </label>
        <ul class="md-nav__list" data-md-scrollfix>
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="../../guide/migrate_relative/" class="md-nav__link">
        CentOS停服专区
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="../../guide/migrate/" class="md-nav__link">
        CentOS迁移OpenCloudOS
      </a>
    </li>
  

            
          
        </ul>
      </nav>
    </li>
  

    
  </ul>
</nav>
                  </div>
                </div>
              </div>
            
            
              
              <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
                <div class="md-sidebar__scrollwrap">
                  <div class="md-sidebar__inner">
                    

<nav class="md-nav md-nav--secondary" aria-label="目录">
  
  
  
    
  
  
    <label class="md-nav__title" for="__toc">
      <span class="md-nav__icon md-icon"></span>
      目录
    </label>
    <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
      
        <li class="md-nav__item">
  <a href="#311" class="md-nav__link">
    31.1.排队规则概述
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#312-opencloudos-qdiscs" class="md-nav__link">
    31.2. OpenCloudOS 中可用的 qdiscs
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#313-tc-qdiscs" class="md-nav__link">
    31.3.使用 tc 工具检查网络接口的 qdiscs
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#314-qdisc" class="md-nav__link">
    31.4.更新默认的 qdisc
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#tc-qdisk" class="md-nav__link">
    使用 tc 工具临时设置网络接口的 qdisk
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#316-networkmanager-qdisk" class="md-nav__link">
    31.6.使用 NetworkManager 永久设置网络接口的当前 qdisk
  </a>
  
</li>
      
    </ul>
  
</nav>
                  </div>
                </div>
              </div>
            
          
          
            <div class="md-content" data-md-component="content">
              <article class="md-content__inner md-typeset">
                
                  

  
  


<h1 id="31-linux">第31章 Linux 流量控制</h1>
<p>Linux 提供管理和操作数据包传输的工具。Linux 流量控制（TC）子系统帮助进行策略、分类、控制以及调度网络流量。TC 还可以通过使用过滤器和动作在分类过程中利用数据包内容分栏。TC 子系统通过排队规则(qdisc)，TC 架构的基本元素，来实现此目的。</p>
<p>调度机制在进入或退出不同的队列前确定或者重新安排数据包。最常见的调度程序是先入先出（FIFO）调度程序。您可以使用 tc 工具临时执行 qdiscs 操作，也可以使用 NetworkManager 永久执行操作。</p>
<p>本章解释了排队规则，并描述了如何在 OpenCloudOS 中更新默认的 qdiscs。</p>
<h2 id="311">31.1.排队规则概述</h2>
<p>排队规则(qdiscs)会帮助规划排队等候，之后通过网络接口调度流量传输。qdisc 有两个操作：
- 排队请求，以便在以后传输时对数据包进行排队
- 出队请求，以便可以选择其中一个排队的数据包进行即时传输。</p>
<p>每个 qdisc 都有一个 16 位十六进制标识数字，称为 handle ，带有一个附加的冒号，如 1: 或 abcd：这个数字被称为 qdisc 主号码。如果 qdisc 有类型，则标识符是由两个数字组成的对，主号码在次要号码之前，即 \<major>:\<minor>，例如 abcd:1。次要号码的编号方案取决于 qdisc 类型。有时，编号是系统化的，其中第一类的 ID 为 &lt; \<major>:1，第二类的 ID 为 \<major>:2 ，等等。一些 qdiscs 允许用户在创建类时随机设置类的次要号码。</p>
<p><strong>Classful qdiscs</strong></p>
<p>存在不同类型的 qdiscs，帮助从网络接口接收和传输数据包。您可以使用根类、父类或子类配置 qdiscs。子对象可以被附加的位置称为类。qdisc 中的类是灵活的，始终包含多个子类或一个子类 qdisc。不禁止包含类 qdisc 本身的类，这有助于实现复杂的流量控制场景。</p>
<p>类 qdiscs 本身不存储任何数据包。相反，它们根据指定于 qdisc 的标准，将排队和出队请求传到它们其中的一个子类。最后，这个递归数据包传递到最终保存数据包的位置（或在出现排队时从中提取）。</p>
<p><strong>Classless qdiscs</strong></p>
<p>有些 qdiscs 不包含子类，它们称为无类别 qdiscs。与类 qdiscs 相比，无类别 qdiscs 需要较少的自定义。通常情况下，将它们附加到接口就足够了。</p>
<h2 id="312-opencloudos-qdiscs">31.2. OpenCloudOS 中可用的 qdiscs</h2>
<p>每个 qdisc 解决唯一对应的与相关网络问题。以下是 OpenCloudOS 中可用的 qdiscs 列表。您可以使用以下任何一个 qdisc 来根据您的网络要求来塑造网络流量。</p>
<table>
<thead>
<tr>
<th>qdisc 名称</th>
<th>所处模块</th>
<th>卸载支持</th>
</tr>
</thead>
<tbody>
<tr>
<td>异步传输模式(ATM)</td>
<td>kernel-modules-extra</td>
<td></td>
</tr>
<tr>
<td>基于类的队列</td>
<td>kernel-modules-extra</td>
<td></td>
</tr>
<tr>
<td>基于信用的塑造程序</td>
<td>kernel-modules-extra</td>
<td>是</td>
</tr>
<tr>
<td>CHOose 和 Keep 用于有响应的流量，CHOose 和 Kill 用于没有响应的流量（CHOKE）</td>
<td>kernel-modules-extra</td>
<td></td>
</tr>
<tr>
<td>受控的延迟（CoDel）</td>
<td>kernel-core</td>
<td></td>
</tr>
<tr>
<td>轮循(DRR)</td>
<td>kernel-modules-extra</td>
<td></td>
</tr>
<tr>
<td>Differentiated Services marker (DSMARK)</td>
<td>kernel-modules-extra</td>
<td></td>
</tr>
<tr>
<td>Enhanced Transmission Selection (ETS)</td>
<td>kernel-modules-extra</td>
<td>是</td>
</tr>
<tr>
<td>Fair Queue (FQ)</td>
<td>kernel-core</td>
<td></td>
</tr>
<tr>
<td>Fair Queuing Controlled Delay (FQ_CODel)</td>
<td>kernel-core</td>
<td></td>
</tr>
<tr>
<td>Generalized Random Early Detection (GRED)</td>
<td>kernel-modules-extra</td>
<td></td>
</tr>
<tr>
<td>Hierarchical Fair Service Curve (HSFC)</td>
<td>kernel-core</td>
<td></td>
</tr>
<tr>
<td>Heavy-Hitter Filter (HHF)</td>
<td>kernel-core</td>
<td></td>
</tr>
<tr>
<td>Hierarchy Token Bucket (HTB)</td>
<td>kernel-core</td>
<td></td>
</tr>
<tr>
<td>INGRESS</td>
<td>kernel-core</td>
<td>是</td>
</tr>
<tr>
<td>Multi Queue Priority (MQPRIO)</td>
<td>kernel-modules-extra</td>
<td>是</td>
</tr>
<tr>
<td>Multiqueue (MULTIQ)</td>
<td>kernel-modules-extra</td>
<td>是</td>
</tr>
<tr>
<td>Network Emulator (NETEM)</td>
<td>kernel-modules-extra</td>
<td></td>
</tr>
<tr>
<td>Proportional Integral-controller Enhanced (PIE)</td>
<td>kernel-core</td>
<td></td>
</tr>
<tr>
<td>PLUG</td>
<td>kernel-core</td>
<td></td>
</tr>
<tr>
<td>Quick Fair Queueing (QFQ)</td>
<td>kernel-modules-extra</td>
<td></td>
</tr>
<tr>
<td>Random Early Detection (RED)</td>
<td>kernel-modules-extra</td>
<td>是</td>
</tr>
<tr>
<td>Stochastic Fair Blue (SFB)</td>
<td>kernel-modules-extra</td>
<td></td>
</tr>
<tr>
<td>Stochastic Fairness Queueing (SFQ)</td>
<td>kernel-core</td>
<td></td>
</tr>
<tr>
<td>Token Bucket Filter (TBF)</td>
<td>kernel-core</td>
<td>是</td>
</tr>
<tr>
<td>Trivial Link Equalizer (TEQL)</td>
<td>kernel-modules-extra</td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
</tr>
</tbody>
</table>
<p>注意，qdisc 卸载需要对 NIC 的硬件和驱动程序的支持。</p>
<h2 id="313-tc-qdiscs">31.3.使用 tc 工具检查网络接口的 qdiscs</h2>
<p>默认情况下，OpenCloudOS 系统使用 fq_codel 、 qdisc。本节流程描述了如何检查 qdisc 计数器。</p>
<p><strong>流程</strong></p>
<ol>
<li>可选：查看您当前的 qdisc ：
    <div class="highlight"><pre><span></span><code># tc qdisc show dev enp0s1
</code></pre></div></li>
<li>检查当前的 qdisc 计数器：
    <div class="highlight"><pre><span></span><code># tc -s qdisc show dev enp0s1
qdisc fq_codel 0: root refcnt 2 limit 10240p flows 1024 quantum 1514 target 5.0ms interval 100.0ms memory_limit 32Mb ecn
Sent 1008193 bytes 5559 pkt (dropped 233, overlimits 55 requeues 77)
backlog 0b 0p requeues 0
....
</code></pre></div><ul>
<li>dropped - 由于所有队列已满而丢弃数据包的次数</li>
<li>overlimits - 配置的链路容量已满的次数</li>
<li>sent - 出队的数量</li>
</ul>
</li>
</ol>
<h2 id="314-qdisc">31.4.更新默认的 qdisc</h2>
<p><strong>流程</strong></p>
<ol>
<li>查看当前的默认 qdisc ：
    <div class="highlight"><pre><span></span><code># sysctl -a | grep qdisc
net.core.default_qdisc = fq_codel
</code></pre></div></li>
<li>查看当前以太网连接的 qdisc ：
    <div class="highlight"><pre><span></span><code># tc -s qdisc show dev enp0s1
qdisc fq_codel 0: root refcnt 2 limit 10240p flows 1024 quantum 1514 target 5.0ms interval 100.0ms memory_limit 32Mb ecn
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
maxpacket 0 drop_overlimit 0 new_flow_count 0 ecn_mark 0
new_flows_len 0 old_flows_len 0
</code></pre></div></li>
<li>更新现有的 qdisc ：
    <div class="highlight"><pre><span></span><code># sysctl -w net.core.default_qdisc=pfifo_fast
</code></pre></div></li>
<li>重新加载网络驱动程序应用更改：
    <div class="highlight"><pre><span></span><code># rmmod NETWORKDRIVERNAME
# modprobe NETWORKDRIVERNAME
</code></pre></div></li>
<li>启动网络接口：
    <div class="highlight"><pre><span></span><code># IP link set enp0s1 up
</code></pre></div></li>
</ol>
<p><strong>验证</strong></p>
<ul>
<li>查看以太网连接的 qdisc ：
    <div class="highlight"><pre><span></span><code># tc -s qdisc show dev enp0s1
qdisc pfifo_fast 0: root refcnt 2 bands 3 priomap  1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1
Sent 373186 bytes 5333 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
....
</code></pre></div></li>
</ul>
<h2 id="tc-qdisk">使用 tc 工具临时设置网络接口的 qdisk</h2>
<p>您可以更新当前临时的 qdisc 而不更改默认的 qdisc 。</p>
<p><strong>流程</strong></p>
<ol>
<li>可选：查看当前的 qdisc ：
    <div class="highlight"><pre><span></span><code># tc -s qdisc show dev enp0s1
</code></pre></div></li>
<li>更新当前的 qdisc ：
    <div class="highlight"><pre><span></span><code># tc qdisc replace dev enp0s1 root htb
</code></pre></div></li>
</ol>
<p><strong>验证</strong></p>
<ul>
<li>查看更新后的当前 qdisc ：
    <div class="highlight"><pre><span></span><code># tc -s qdisc show dev enp0s1
qdisc htb 8001: root refcnt 2 r2q 10 default 0 direct_packets_stat 0 direct_qlen 1000
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
</code></pre></div></li>
</ul>
<h2 id="316-networkmanager-qdisk">31.6.使用 NetworkManager 永久设置网络接口的当前 qdisk</h2>
<p><strong>流程</strong></p>
<ol>
<li>可选：查看当前的 qdisc ：
    <div class="highlight"><pre><span></span><code># tc qdisc show dev enp0s1
 qdisc fq_codel 0: root refcnt 2
</code></pre></div></li>
<li>更新当前的 qdisc ：
    <div class="highlight"><pre><span></span><code># nmcli connection modify enp0s1 tc.qdiscs ‘root pfifo_fast’
</code></pre></div></li>
<li>可选：要在现有的 qdisc 上添加另一个 qdisc，请使用 +tc.qdisc 选项：
    <div class="highlight"><pre><span></span><code># nmcli connection modify enp0s1 +tc.qdisc ‘ingress handle ffff:’
</code></pre></div></li>
<li>激活更改：
    <div class="highlight"><pre><span></span><code># nmcli connection up enp0s1
</code></pre></div></li>
</ol>
<p><strong>验证</strong></p>
<ul>
<li>查看更新后的当前 qdisc ：
    <div class="highlight"><pre><span></span><code># tc qdisc show dev enp0s1
qdisc pfifo_fast 8001: root refcnt 2 bands 3 priomap  1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1
qdisc ingress ffff: parent ffff:fff1 ----------------
</code></pre></div></li>
</ul>
<h1 id="32-dns">第32章 配置DNS服务器顺序</h1>
<p>大多数应用程序使用 glibc 库的 getaddrinfo（） 函数来解析 DNS 请求。默认情况下，glibc 将所有 DNS 请求发送到 /etc/resolv.conf 文件中指定的第一个 DNS 服务器。如果这个服务器没有回复，OpenCloudOS 会使用这个文件中的下一个服务器。</p>
<p>本章介绍了如何自定义 DNS 服务器顺序。</p>
<h2 id="321-networkmanager-etcresolvconf-dns">32.1.使用 NetworkManager 在 /etc/resolv.conf 中对 DNS 服务器进行排序</h2>
<p>NetworkManager 根据以下规则对 /etc/resolv.conf 文件中的 DNS 服务器进行排序：
- 如果只有一个连接配置集，NetworkManager 将使用那个连接中指定的 IPv4 和 IPv6 DNS 服务器顺序。
- 如果激活多个连接配置集，NetworkManager 会根据 DNS 优先级值对 DNS 服务器进行排序。如果您设置了 DNS 优先级，NetworkManager 的行为取决于 dns 参数中设置的值。您可以在 /etc/NetworkManager/NetworkManager.conf 文件的 [main] 部分中设置此参数：</p>
<ul>
<li>
<p>dns=default 或者如果 dns 参数没有设置：</p>
<p>NetworkManager 根据每个连接中的 ipv4.dns-priority 和 ipv6.dns-priority 参数对不同的连接的 DNS 服务器进行排序。</p>
<p>如果没有设置值，或者您将 ipv4.dns-priority 和 ipv6.dns-priority 设为 0 ，则 NetworkManager 将使用全局默认值。请参阅 DNS 优先级参数的默认值。</p>
</li>
<li>
<p>dns=dnsmasq 或 dns=systemd-resolved ：</p>
<p>当您使用这些设置中的一个时，NetworkManager 将 dnsmasq 的 127.0.0.1 或 127.0.0.53 设为 /etc/resolv.conf 文件中的 nameserver 条目。</p>
<p>dnsmasq 和 systemd-resolved 服务将对 NetworkManager 连接中设置的搜索域的查询转发到该连接中指定的 DNS 服务器，并将对其他域的查询转发到带有默认路由的连接。当多个连接有相同的搜索域集时，dnsmasq 和 systemd-resolved 将这个域的查询转发到在具有最低优先级值的连接中设置的 DNS 服务器。</p>
</li>
</ul>
<p>DNS 优先级参数的默认值
NetworkManager 对连接使用以下默认值：</p>
<ul>
<li>50 用于 VPN 连接</li>
<li>100 用于其他连接</li>
</ul>
<p>有效的 DNS 优先级值：
您可以将全局默认值和特定于连接的 ipv4.dns-priority 和 ipv6.dns-priority 参数设为 -2147483647 和 2147483647 之间的值。</p>
<ul>
<li>低的值具有更高的优先级。</li>
<li>负值具有一个特殊的效果，它会排除其他带有更大值的配置。例如，如果至少有一个连接具有负优先级值，NetworkManager 只使用在连接配置集中指定的具有最低优先级的 DNS 服务器。</li>
<li>
<p>如果多个连接具有相同的 DNS 优先级，NetworkManager 会按照以下顺序排列 DNS 的优先顺序：</p>
<ol>
<li>VPN 连接</li>
<li>带有活跃的默认路由的连接。活跃的默认路由是具有最低指标的默认路由。</li>
</ol>
</li>
</ul>
<h2 id="322-networkmanager-dns">32.2.设置 NetworkManager DNS 默认服务器优先级值</h2>
<p>NetworkManager 为连接使用以下 DNS 优先级默认值：</p>
<ul>
<li>50 用于 VPN 连接</li>
<li>100 用于其他连接</li>
</ul>
<p>这部分论述了如何使用 IPv4 和 IPv6 连接的自定义默认值覆盖这些系统范围的默认值。</p>
<p><strong>流程</strong></p>
<ol>
<li>编辑 /etc/NetworkManager/NetworkManager.conf 文件：</li>
<li>添加 [connection] 部分（如果不存在）：
    <div class="highlight"><pre><span></span><code>[connection]
</code></pre></div></li>
<li>
<p>将自定义默认值添加到 [connection] 部分。例如，要将 IPv4 和 IPv6 的新默认值设为 200，请添加：
    <div class="highlight"><pre><span></span><code>ipv4.dns-priority=200
ipv6.dns-priority=200
</code></pre></div>
    您可以将参数设为 -2147483647 和 2147483647 之间的值。请注意，将参数设置为 0 将启用内置的默认值（对于 VPN 连接为 50 ，对于其他连接为 100 ）。</p>
</li>
<li>
<p>重新载入 NetworkManager 服务：
    <div class="highlight"><pre><span></span><code># systemctl reload NetworkManager
</code></pre></div></p>
</li>
</ol>
<h2 id="323-networkmanager-dns">32.3.设置 NetworkManager 连接的 DNS 优先级</h2>
<p>本节介绍了如何在 NetworkManager 创建或更新 /etc/resolv.conf 文件时定义 DNS 服务器的顺序。</p>
<p>请注意，只有在您配置了多个不同 DNS 服务器的多个连接时，设置 DNS 优先级才有意义。如果您只有一个配置了多个 DNS 服务器的连接，请在连接配置集中按顺序手动设置 DNS 服务器。</p>
<p><strong>前提条件</strong></p>
<ul>
<li>系统配置了多个 NetworkManager 连接。</li>
<li>系统在 /etc/NetworkManager/NetworkManager.conf 文件中未设置 dns 参数，或者该参数被设为了 default。</li>
</ul>
<p><strong>流程</strong></p>
<ol>
<li>可选，显示可用的连接：
    <div class="highlight"><pre><span></span><code># nmcli connection show
NAME           UUID                                  TYPE      DEVICE
Example_con_1  d17ee488-4665-4de2-b28a-48befab0cd43  ethernet  enp1s0
Example_con_2  916e4f67-7145-3ffa-9f7b-e7cada8f6bf7  ethernet  enp7s0
...
</code></pre></div></li>
<li>设置 ipv4.dns-priority 和 ipv6.dns-priority 参数。例如，对于 
Example_con_1 连接，将两个参数都设为 10 ：
    <div class="highlight"><pre><span></span><code># nmcli connection modify Example_con_1 ipv4.dns-priority 10 ipv6.dns-priority 10
</code></pre></div></li>
<li>重新激活您更新的连接：
    <div class="highlight"><pre><span></span><code># nmcli connection up Example_con_1
</code></pre></div></li>
</ol>
<p><strong>验证</strong></p>
<ul>
<li>显示 /etc/resolv.conf 文件的内容以验证 DNS 服务器的顺序是否正确：
    <div class="highlight"><pre><span></span><code># cat /etc/resolv.conf
</code></pre></div></li>
</ul>
<h1 id="33-ifcfg-ip">第33章 使用 ifcfg 文件配置 ip 网络</h1>
<p>本章介绍了如何通过编辑 ifcfg 文件来手动配置网络接口。</p>
<p>NetworkManager 支持以 keyfile 格式存储的配置集。但是，在使用 NetworkManager API 创建或更新配置文件时，NetworkManager 默认使用 ifcfg 格式。</p>
<p>接口配置(ifcfg)文件可控制各个网络设备的软件接口。当系统引导时，它使用这些文件来决定启动哪些界面以及如何进行配置。这些文件通常被命名为 ifcfg-name，其中后缀 name 指的是配置文件控制的设备的名称。按照惯例，ifcfg 文件的后缀与配置文件中 DEVICE 指令提供的字符串相同。</p>
<h2 id="331-ifcfg">33.1.使用 ifcfg 文件配置带有静态网络设置的接口</h2>
<p>本节介绍了如何使用 ifcfg 文件配置网络接口。</p>
<p><strong>流程</strong></p>
<ul>
<li>如果需要为名为 enp1s0 的接口配置具有静态网络设置的接口，请在 /etc/sysconfig/network-scripts/ 目录中创建一个名为 ifcfg-enp1s0 的文件，其包含以下内容：</li>
<li>对于 IPv4 配置：
    <div class="highlight"><pre><span></span><code>DEVICE=enp1s0
BOOTPROTO=none
ONBOOT=yes
PREFIX=24
IPADDR=10.0.1.27
GATEWAY=10.0.1.1
</code></pre></div></li>
<li>对于 IPv6 配置：
    <div class="highlight"><pre><span></span><code>DEVICE=enp1s0
BOOTPROTO=none
ONBOOT=yes
IPV6INIT=yes
IPV6ADDR=2001:db8:1::2/64
</code></pre></div></li>
</ul>
<h2 id="332-ifcfg">33.2.使用 ifcfg 文件配置带有动态网络设置的接口</h2>
<p>本节介绍了如何使用 ifcfg 文件配置具有动态网络设置的网络接口。</p>
<p><strong>流程</strong></p>
<ol>
<li>
<p>如果需要为名为 em1 的接口配置具有动态网络设置的接口，请在 /etc/sysconfig/network-scripts/ 目录中创建一个名为 ifcfg-em1 的文件，其包含以下内容：
    <div class="highlight"><pre><span></span><code>DEVICE=em1
BOOTPROTO=dhcp
ONBOOT=yes
</code></pre></div></p>
</li>
<li>
<p>要配置发送的接口：</p>
</li>
<li>如果 DHCP 服务器使用不同的主机名，请在 ifcfg 文件中添加以下行：
    <div class="highlight"><pre><span></span><code>DHCP_HOSTNAME=hostname
</code></pre></div></li>
<li>DHCP 服务器使用不同的完全限定域名(FQDN)，请在 ifcfg 文件中添加以下行：
    <div class="highlight"><pre><span></span><code>DHCP_FQDN=fully.qualified.domain.name
</code></pre></div></li>
</ol>
<p>注意，您只能使用这些设置中的一个。如果您同时指定了 DHCP_HOSTNAME 和 DHCP_FQDN，则只使用 DHCP_FQDN。</p>
<ol>
<li>要将接口配置为使用特定的 DNS 服务器，请在 ifcfg 文件中添加以下行：
    <div class="highlight"><pre><span></span><code>PEERDNS=no
DNS1=ip-address
DNS2=ip-address
</code></pre></div>
    其中 ip-address 是 DNS 服务器的地址。这会导致网络服务使用指定的 DNS 服务器更新 /etc/resolv.conf。只需要一个 DNS 服务器地址，另一个是可选的。</li>
</ol>
<h2 id="333-ifcfg">33.3.使用 ifcfg 文件管理系统范围和专用的连接配置集</h2>
<p>本节描述了如何配置 ifcfg 文件来管理系统范围和私有的连接配置文件。</p>
<p><strong>流程</strong>
访问权限对应 ifcfg 文件中的 USERS 指令。如果没有 USERS 指令，则网络配置文件对所有用户可用。</p>
<ul>
<li>例如，使用以下行修改 ifcfg 文件，这将使连接仅对列出的用户可用：
    <div class="highlight"><pre><span></span><code>USERS=&quot;joe bob alice&quot;
</code></pre></div></li>
</ul>
<h1 id="34-networkmanager-ipv6">第34章 使用 NetworkManager 为特定连接禁用 IPv6</h1>
<p>这部分描述了如何在使用 NetworkManager 管理网络接口的系统上禁用 IPv6 协议。如果您禁用了 IPv6，则 NetworkManager 会在内核中自动设置相应的 sysctl 值。如果使用内核可调参数或内核引导参数禁用 IPv6，则必须额外考虑系统配置。</p>
<p><strong>前提条件</strong>
- 系统使用 NetworkManager 来管理网络接口</p>
<h2 id="341-nmcli-ipv6">34.1.使用 nmcli 在连接中禁用 IPv6</h2>
<p><strong>流程</strong></p>
<ol>
<li>可选，显示网络连接列表：
    <div class="highlight"><pre><span></span><code># nmcli connection show
NAME    UUID                                  TYPE      DEVICE
Example 7a7e0151-9c18-4e6f-89ee-65bb2d64d365  ethernet  enp1s0
...
</code></pre></div></li>
<li>显示网络连接列表：
    <div class="highlight"><pre><span></span><code># nmcli connection modify Example ipv6.method &quot;disabled&quot;
</code></pre></div></li>
<li>重启网络连接：
    <div class="highlight"><pre><span></span><code># nmcli connection up Example
</code></pre></div></li>
</ol>
<p><strong>验证</strong></p>
<ol>
<li>
<p>输入 ip address show 命令来显示设备的 IP 设置：
    <div class="highlight"><pre><span></span><code># ip address show enp1s0
2: enp1s0: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 52:54:00:6b:74:be brd ff:ff:ff:ff:ff:ff
    inet 192.0.2.1/24 brd 192.10.2.255 scope global noprefixroute enp1s0
    valid_lft forever preferred_lft forever
</code></pre></div>
    如果没有显示 inet6 条目，则 IPv6 在该设备上被禁用。</p>
</li>
<li>
<p>验证 /proc/sys/net/ipv6/conf/enp1s0/disable_ipv6 文件现在是否包含值 1 :
    <div class="highlight"><pre><span></span><code># cat /proc/sys/net/ipv6/conf/enp1s0/disable_ipv6
1
</code></pre></div>
    值 1 表示针对该设备禁用 IPv6。</p>
</li>
</ol>
<h1 id="35-etcresolvconf">第35章 手动配置 /etc/resolv.conf 文件</h1>
<p>默认情况下，OpenCloudOS 上的 NetworkManager 使用连接配置文件中的 DNS 设置动态更新 /etc/resolv.conf 文件。本章介绍了如何禁用此特性，来在 /etc/resolv.conf 中手动配置 DNS 设置。</p>
<h2 id="351-networkmanager-dns">35.1.在 NetworkManager 配置中禁用 DNS 处理</h2>
<p>本节介绍了如何在 NetworkManager 配置中禁用 DNS 处理来手动配置 /etc/resolv.conf 文件。</p>
<p><strong>流程</strong></p>
<ol>
<li>
<p>以 root 用户身份，使用文本编辑器创建包含以下内容的 /etc/NetworkManager/conf.d/90-dns-none.conf 文件：
    <div class="highlight"><pre><span></span><code>[main]
dns=none
</code></pre></div></p>
</li>
<li>
<p>重新载入 NetworkManager 服务：
    <div class="highlight"><pre><span></span><code># systemctl reload NetworkManager
</code></pre></div>
    注意，重新加载服务后，NetworkManager 不再更新 /etc/resolv.conf 文件。但是该文件的最后内容将被保留。</p>
</li>
<li>
<p>（可选）从 /etc/resolv.conf 中删除 NetworkManager 生成的 注释，方便阅读。</p>
</li>
</ol>
<p><strong>验证</strong></p>
<ol>
<li>编辑 /etc/resolv.conf 文件并手动更新配置。</li>
<li>重新载入 NetworkManager 服务：
    <div class="highlight"><pre><span></span><code># systemctl reload NetworkManager
</code></pre></div></li>
<li>显示 /etc/resolv.conf 文件：
    <div class="highlight"><pre><span></span><code># cat /etc/resolv.conf
</code></pre></div>
    如果您成功禁用了 DNS 处理，NetworkManager 不会覆盖手动配置的设置。</li>
</ol>
<h2 id="352-etcresolvconf-dns">35.2.使用符号链接替换 /etc/resolv.conf 来手动配置 DNS 设置</h2>
<p>如果 /etc/resolv.conf 是符号链接，则 NetworkManager 不会自动更新 DNS 配置。本节描述了如何将带有符号链接的 /etc/resolv.conf 替换成带有 DNS 配置的文件。</p>
<p><strong>前提条件</strong></p>
<ul>
<li>rc-manager 选项没有设为 file。要验证，请使用 NetworkManager --print-config 命令。</li>
</ul>
<p><strong>流程</strong></p>
<ol>
<li>创建一个文件，如 /etc/resolv.conf.manually-configured，并将您环境的 DNS 配置添加到其中。使用与原始 /etc/resolv.conf 中一样的参数和语法。</li>
<li>删除 /etc/resolv.conf 文件：
    <div class="highlight"><pre><span></span><code># rm /etc/resolv.conf
</code></pre></div></li>
<li>创建名为 /etc/resolv.conf 的符号链接，该链接指向 /etc/resolv.conf.manually-configured ：
    <div class="highlight"><pre><span></span><code># ln -s /etc/resolv.conf.manually-configured /etc/resolv.conf
</code></pre></div></li>
</ol>
<h1 id="36">第36章 监控并调整网卡环缓冲</h1>
<p>接收环形缓冲区是设备驱动程序和网络接口控制器 (NIC) 之间共享的共享缓冲区。该卡会分配一个发送 (TX) 和接收 (RX) 环形缓冲区。顾名思义，环形缓冲区是一个循环缓冲区，溢出数据会覆盖现有数据。将数据从 NIC 移动到内核有两种方法，硬件中断和软件中断，也称为 SoftIRQ。</p>
<p>内核使用 RX 环形缓冲区来存储传入的数据包，直到它们可以被设备驱动程序处理。设备驱动程序通常使用 SoftIRQ排空 RX 环，它将传入的数据包放入称为sk_buff或skb的内核数据结构中，数据包开始其通过内核的过程，直到到达拥有相关套接字的应用程序。</p>
<p>内核使用 TX 环形缓冲区来保存发往线路的传出数据包。</p>
<p>这些环形缓冲区位于堆栈的底部，是可能发生丢包的关键点，同时，这也会对网络性能产生不利影响。</p>
<h2 id="361">36.1.显示丢弃的数据包数量</h2>
<p>ethtool 工具可让管理员查询、配置或控制网络驱动程序设置。</p>
<p>RX 环缓冲的耗尽会导致计数器的递增，例如 ethtool -S interface_name 的输出中的 "discard" 或 "drop"。丢弃的数据包表示可用缓冲区的填满速度要快于内核可以处理数据包的速度。</p>
<p>本节描述了如何使用 ethtool 显示丢弃计数器。</p>
<p><strong>流程</strong></p>
<ul>
<li>要查看 enp1s0 接口的丢弃计数器，请输入：
    <div class="highlight"><pre><span></span><code>$ ethtool -S enp1s0
</code></pre></div></li>
</ul>
<h2 id="362-rx">36.2.增加 RX 环缓冲以降低数据包丢弃的比率</h2>
<p>ethtool 工具可以帮助提高 RX 缓冲大小，以减少数据包的高丢弃率。</p>
<p><strong>流程</strong></p>
<ol>
<li>
<p>查看 RX 环缓冲的最大值：
    <div class="highlight"><pre><span></span><code># ethtool -g enp1s0
Ring parameters for enp1s0:
Pre-set maximums:
RX:             4080
RX Mini:        0
RX Jumbo:       16320
TX:             255
Current hardware settings:
RX:             255
RX Mini:        0
RX Jumbo:       0
TX:             255
</code></pre></div></p>
</li>
<li>
<p>如果 Pre-set maximums 部分中的值大于 Current hardware settings 部分，请增加 RX 环缓冲：</p>
<ul>
<li>要临时将 enp1s0 设备的 RX 环缓冲改为 4080，请输入：
    <div class="highlight"><pre><span></span><code># ethtool -G enp1s0 rx 4080
</code></pre></div></li>
<li>要永久更改 RX 环缓冲，请创建一个 NetworkManager 分配程序脚本。</li>
</ul>
</li>
</ol>
<p>注意，根据您的网卡使用的驱动，环缓冲的改变会很快中断网络连接。</p>





                
              </article>
            </div>
          
          
        </div>
        
          <button type="button" class="md-top md-icon" data-md-component="top" hidden>
            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8v12Z"/></svg>
            回到页面顶部
          </button>
        
      </main>
      
        <footer class="md-footer">
  
  <div class="md-footer-meta md-typeset">
    <div class="md-footer-meta__inner md-grid">
      <div class="md-copyright">
  
  
    Made with
    <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
      Material for MkDocs
    </a>
  
</div>
      
    </div>
  </div>
</footer>
      
    </div>
    <div class="md-dialog" data-md-component="dialog">
      <div class="md-dialog__inner md-typeset"></div>
    </div>
    
    <script id="__config" type="application/json">{"base": "../..", "features": ["content.code.annotate", "content.tooltips", "navigation.indexes", "navigation.sections", "navigation.tabs", "navigation.top", "navigation.tracking", "search.highlight", "search.share", "search.suggest", "toc.follow"], "search": "../../assets/javascripts/workers/search.208ed371.min.js", "translations": {"clipboard.copied": "\u5df2\u590d\u5236", "clipboard.copy": "\u590d\u5236", "search.result.more.one": "\u5728\u8be5\u9875\u4e0a\u8fd8\u6709 1 \u4e2a\u7b26\u5408\u6761\u4ef6\u7684\u7ed3\u679c", "search.result.more.other": "\u5728\u8be5\u9875\u4e0a\u8fd8\u6709 # \u4e2a\u7b26\u5408\u6761\u4ef6\u7684\u7ed3\u679c", "search.result.none": "\u6ca1\u6709\u627e\u5230\u7b26\u5408\u6761\u4ef6\u7684\u7ed3\u679c", "search.result.one": "\u627e\u5230 1 \u4e2a\u7b26\u5408\u6761\u4ef6\u7684\u7ed3\u679c", "search.result.other": "# \u4e2a\u7b26\u5408\u6761\u4ef6\u7684\u7ed3\u679c", "search.result.placeholder": "\u952e\u5165\u4ee5\u5f00\u59cb\u641c\u7d22", "search.result.term.missing": "\u7f3a\u5c11", "select.version": "\u9009\u62e9\u5f53\u524d\u7248\u672c"}}</script>
    
    
      <script src="../../assets/javascripts/bundle.51198bba.min.js"></script>
      
    
  </body>
</html>